package org.txazo.blog.util;

import java.util.regex.Pattern;

/**
 * 正则表达式工具类
 * 
 * @author Tu XiaoZhou
 * @since 2013-08-10
 * 
 */
public class PatternUtil {

	/** 正则-电子邮件 */
	private static final Pattern REGEX_PATTERN_EMAIL = Pattern
			.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
	/** 正则-数字和字母组成的6到18位字符串 */
	private static final Pattern REGEX_PATTERN_NUMANDCHAR = Pattern
			.compile("^[A-Za-z0-9]{6,18}$");
	/** 正则-数字和字母组成且以字母开头的6到18位字符串 */
	private static final Pattern REGEX_PATTERN_NUMANDCHARBEGIN = Pattern
			.compile("^[A-Za-z][A-Za-z0-9]{5,17}$");
	/** 正则-中文 */
	private static final Pattern REGEX_PATTERN_CHINESE = Pattern
			.compile("^[\u4e00-\u9fa5]+$");
	/** 正则-验证码图片URI */
	private static final Pattern REGEX_PATTERN_AUTHCODE_URI = Pattern
			.compile("^/images/authCode/[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.jpg");

	/** 是否匹配电子邮件 */
	public static boolean matchEmail(String str) {
		return REGEX_PATTERN_EMAIL.matcher(str).matches();
	}

	/** 是否匹配数字和字母组成的6到18位字符串 */
	public static boolean matchNumAndChar(String str) {
		return REGEX_PATTERN_NUMANDCHAR.matcher(str).matches();
	}

	/** 是否匹配数字和字母组成且以字母开头的6到18位字符串 */
	public static boolean matchNumAndCharBegin(String str) {
		return REGEX_PATTERN_NUMANDCHARBEGIN.matcher(str).matches();
	}

	/** 是否匹配中文 */
	public static boolean matchChinese(String str) {
		return REGEX_PATTERN_CHINESE.matcher(str).matches();
	}

	/** 验证码图片URI */
	public static boolean matchAuthCodeURI(String str) {
		return REGEX_PATTERN_AUTHCODE_URI.matcher(str).matches();
	}

}
